package com.jiangyg.mall.ware.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jiangyg.mall.ware.entity.WareSku;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 类描述：商品库存
 *
 * @author jiangyg
 * @email email@jiangyg.com
 * @date 2021-10-18 22:33:26
 */
@Mapper
public interface WareSkuDao extends BaseMapper<WareSku> {

    /**
     * 功能描述：查询SKU的库存信息
     *
     * @param skuIds 待查询SKU集合
     * @return 结果
     */
    @MapKey("sku_id")
    List<Map<String, Object>> selectSkuStockInfo(@Param("skuIds") List<Long> skuIds);

    /**
     * 功能描述：根据主键锁定库存
     *
     * @param id       主键
     * @param quantity 锁定数量
     * @return 影响条数
     */
    int lockSkuStock(@Param("id") long id,
                     @Param("quantity") int quantity);

    /**
     * 功能描述：解锁商品库存
     *
     * @param skuId    商品ID
     * @param wareId   库存ID
     * @param quantity 解锁数量
     * @return 影响条数
     */
    int unlockSkuStock(@Param("skuId") long skuId,
                       @Param("wareId") long wareId,
                       @Param("quantity") int quantity);

}
